/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.fatecpg.zanotti.acessobanco;

import br.com.fatecpg.zanotti.modelo.Cliente;
import javax.swing.*;
import java.sql.*;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;

/**
 * Classe responsável por realizar todas consultas relacionadas a Tabela da janela de Cliente.
 * @author F.L. Zanotti
 */
public class conTableCliente {

    public JTable ConsultaTabelaToda(JTable testeTabela) {

        try {
            Connection con = AbreConexao.getConexao();
            String query = "SELECT NMCLIENTE, CPFCLIENTE from CLIENTE ORDER BY NMCLIENTE";
            PreparedStatement pst = con.prepareStatement(query);

            ResultSet rs = pst.executeQuery();


            DefaultTableModel modelo = (DefaultTableModel) testeTabela.getModel();
            modelo.setNumRows(0);

            while (rs.next()) {
                String NMCLIENTE = rs.getString("NMCLIENTE");
                String CPFCLIENTE = rs.getString("CPFCLIENTE");


                CPFCLIENTE = CPFCLIENTE.trim();
                NMCLIENTE = NMCLIENTE.trim();

                Vector teste = new Vector();
                teste.addElement(NMCLIENTE);
                teste.addElement(CPFCLIENTE);


                modelo.addRow(teste);


            }
            System.out.println(testeTabela.getRowCount());
            return testeTabela;
        } catch (SQLException e) {
            System.out.println(e);
        }

        return null;
    }

    public JTable ConsultaTabelaPorNome(JTable testeTabela, String s) {

        try {
            Connection con = AbreConexao.getConexao();




            PreparedStatement pst = con.prepareStatement("SELECT NMCLIENTE, CPFCLIENTE FROM CLIENTE WHERE NMCLIENTE LIKE '" + s + "%'");

            ResultSet rs = pst.executeQuery();
            DefaultTableModel modelo = (DefaultTableModel) testeTabela.getModel();
            modelo.setNumRows(0);

            while (rs.next()) {
                String NMCLIENTE = rs.getString("NMCLIENTE");
                String CPFCLIENTE = rs.getString("CPFCLIENTE");

                CPFCLIENTE = CPFCLIENTE.trim();
                NMCLIENTE = NMCLIENTE.trim();

                Vector teste = new Vector();
                teste.addElement(NMCLIENTE);
                teste.addElement(CPFCLIENTE);


                modelo.addRow(teste);


            }
            System.out.println(testeTabela.getRowCount());
            return testeTabela;
        } catch (SQLException e) {
            System.out.println(e);
        }

        return null;
    }

    public JTable ConsultaTabelaPorCPF(JTable testeTabela, String s) {

        try {
            Connection con = AbreConexao.getConexao();

            PreparedStatement pst = con.prepareStatement("SELECT NMCLIENTE, CPFCLIENTE FROM CLIENTE WHERE CPFCLIENTE LIKE '%" + s + "%'");
//            pst.setString(1, "Abecedario");
            ResultSet rs = pst.executeQuery();
            DefaultTableModel modelo = (DefaultTableModel) testeTabela.getModel();
            modelo.setNumRows(0);

            while (rs.next()) {
                String NMCLIENTE = rs.getString("NMCLIENTE");
                String CPFCLIENTE = rs.getString("CPFCLIENTE");

                CPFCLIENTE = CPFCLIENTE.trim();
                NMCLIENTE = NMCLIENTE.trim();

                Vector teste = new Vector();
                teste.addElement(NMCLIENTE);
                teste.addElement(CPFCLIENTE);

                modelo.addRow(teste);

            }
            System.out.println(testeTabela.getRowCount());
            return testeTabela;
        } catch (SQLException e) {
            System.out.println(e);
        }

        return null;
    }

    public Cliente ConsultaObjetoPorLinha(String s) {
        try {
            Connection con = AbreConexao.getConexao();

            PreparedStatement pst = con.prepareStatement("SELECT cdcliente, cpfcliente, cdloja, nmcliente, " +
                    "nmendlogradouro, nmendnumero, nmendcomp, nmendbairro, nmendcidade, sgendestado" +
                    ", nmendcep, nmemail, TO_CHAR(dtnascimento, 'DD/MM/YY') dtnascimento, cdtelefone, rgcliente from cliente" +
                    " WHERE cpfcliente = " + s + "");

            ResultSet rs = pst.executeQuery();

            while (rs.next()) {

                String CPFCLIENTE = rs.getString("CPFCLIENTE");
                int CDLOJA = rs.getInt("CDLOJA");
                String NMCLIENTE = rs.getString("NMCLIENTE");
                String NMENDLOGRADOURO = rs.getString("NMENDLOGRADOURO");
                String NMENDNUMERO = rs.getString("NMENDNUMERO");
                String NMENDCOMP = rs.getString("NMENDCOMP");
                String NMENDBAIRRO = rs.getString("NMENDBAIRRO");
                String NMENDCIDADE = rs.getString("NMENDCIDADE");
                String SGENDESTADO = rs.getString("SGENDESTADO");
                String NMENDCEP = rs.getString("NMENDCEP");
                String NMEMAIL = rs.getString("NMEMAIL");
                String DTNASCIMENTO = rs.getString("DTNASCIMENTO");
                String CDTELEFONE = rs.getString("CDTELEFONE");
                String RGCLIENTE = rs.getString("RGCLIENTE");
                String CDCLIENTE = rs.getString("CDCLIENTE");


                Cliente.getInstancia().setCDLOJA(CDLOJA);
                Cliente.getInstancia().setCDTELEFONE(CDTELEFONE);
                Cliente.getInstancia().setCPFCLIENTE(CPFCLIENTE);
                Cliente.getInstancia().setDTNASCIMENTO(DTNASCIMENTO);
                Cliente.getInstancia().setNMCLIENTE(NMCLIENTE);
                Cliente.getInstancia().setNMEMAIL(NMEMAIL);
                Cliente.getInstancia().setNMENDBAIRRO(NMENDBAIRRO);
                Cliente.getInstancia().setNMENDCEP(NMENDCEP);
                Cliente.getInstancia().setNMENDCIDADE(NMENDCIDADE);
                Cliente.getInstancia().setNMENDCOMP(NMENDCOMP);
                Cliente.getInstancia().setNMENDLOGRADOURO(NMENDLOGRADOURO);
                Cliente.getInstancia().setNMENDNUMERO(NMENDNUMERO);
                Cliente.getInstancia().setRGCLIENTE(RGCLIENTE);
                Cliente.getInstancia().setSGENDESTADO(SGENDESTADO);
                Cliente.getInstancia().setCDCLIENTE(CDCLIENTE);
            }

            return Cliente.getInstancia();

        } catch (SQLException e) {
            System.out.println(e);
        }

        return null;
    }

    public Cliente ConsultaObjetoPorCDCLIENTE(String s) {
        try {
            Connection con = AbreConexao.getConexao();

            PreparedStatement pst = con.prepareStatement("SELECT cdcliente, cpfcliente, cdloja, nmcliente, " +
                    "nmendlogradouro, nmendnumero, nmendcomp, nmendbairro, nmendcidade, sgendestado" +
                    ", nmendcep, nmemail, TO_CHAR(dtnascimento, 'DD/MM/YY') dtnascimento, cdtelefone, rgcliente from cliente" +
                    " WHERE cdcliente = " + s + "");

            ResultSet rs = pst.executeQuery();

            while (rs.next()) {

                String CPFCLIENTE = rs.getString("CPFCLIENTE");
                int CDLOJA = rs.getInt("CDLOJA");
                String NMCLIENTE = rs.getString("NMCLIENTE");
                String NMENDLOGRADOURO = rs.getString("NMENDLOGRADOURO");
                String NMENDNUMERO = rs.getString("NMENDNUMERO");
                String NMENDCOMP = rs.getString("NMENDCOMP");
                String NMENDBAIRRO = rs.getString("NMENDBAIRRO");
                String NMENDCIDADE = rs.getString("NMENDCIDADE");
                String SGENDESTADO = rs.getString("SGENDESTADO");
                String NMENDCEP = rs.getString("NMENDCEP");
                String NMEMAIL = rs.getString("NMEMAIL");
                String DTNASCIMENTO = rs.getString("DTNASCIMENTO");
                String CDTELEFONE = rs.getString("CDTELEFONE");
                String RGCLIENTE = rs.getString("RGCLIENTE");
                String CDCLIENTE = rs.getString("CDCLIENTE");


                Cliente.getInstancia().setCDLOJA(CDLOJA);
                Cliente.getInstancia().setCDTELEFONE(CDTELEFONE);
                Cliente.getInstancia().setCPFCLIENTE(CPFCLIENTE);
                Cliente.getInstancia().setDTNASCIMENTO(DTNASCIMENTO);
                Cliente.getInstancia().setNMCLIENTE(NMCLIENTE);
                Cliente.getInstancia().setNMEMAIL(NMEMAIL);
                Cliente.getInstancia().setNMENDBAIRRO(NMENDBAIRRO);
                Cliente.getInstancia().setNMENDCEP(NMENDCEP);
                Cliente.getInstancia().setNMENDCIDADE(NMENDCIDADE);
                Cliente.getInstancia().setNMENDCOMP(NMENDCOMP);
                Cliente.getInstancia().setNMENDLOGRADOURO(NMENDLOGRADOURO);
                Cliente.getInstancia().setNMENDNUMERO(NMENDNUMERO);
                Cliente.getInstancia().setRGCLIENTE(RGCLIENTE);
                Cliente.getInstancia().setSGENDESTADO(SGENDESTADO);
                Cliente.getInstancia().setCDCLIENTE(CDCLIENTE);
            }

            return Cliente.getInstancia();

        } catch (SQLException e) {
            System.out.println(e);
        }

        return null;
    }

    public String ConsultaUltimoCDCLIENTE() {
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            con = AbreConexao.getConexao();

            String query = "SELECT MAX(CDCLIENTE)+1 as col from CLIENTE";

            pst = con.prepareStatement(query);
            rs = pst.executeQuery();
            String CDCLIENTE = "";
            while (rs.next()) {
                CDCLIENTE = rs.getString("col");

                CDCLIENTE = CDCLIENTE.trim();



            }

            return CDCLIENTE;
        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            try {
                rs.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
            try {
                pst.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
            try {
                con.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }


        return null;
    }
}
